/*
 * Copyright 2002-2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.aopalliance.aop;

/**
 * Tag interface for Advice. Implementations can be any type
 * of advice, such as Interceptors.
 *
 * @author Rod Johnson
 * @version $Id: Advice.java,v 1.1 2004/03/19 17:02:16 johnsonr Exp $
 */
/*
1总结
 标记接口，用于标识各种类型的通知（Advice），如前置通知、后置通知等。
它本身不包含任何方法，仅作为其他具体通知类型的父接口使用。
在 Spring AOP 中，Advice 接口是构建代理逻辑和拦截器链的基础。
2内部成员说明
Advice 接口没有定义任何方法或字段，它是一个空的标记接口（Marker Interface），其作用是提供一种类型标识，便于框架识别和处理不同类型的通知。
3 与其他类和接口的关系
     Advice	AOP 联盟定义的根标记接口，表示通知（增强）的通用概念，不包含任何方法
     ├── BeforeAdvice 标记接口，表示前置通知，在目标方法执行前执行
     │   ├── MethodBeforeAdvice	具体的前置通知接口，允许在目标方法执行前插入自定义逻辑
     │   │   └── AspectJMethodBeforeAdvice
     │   └── MethodBeforeAdviceInterceptor	（拦截器适配器）将 MethodBeforeAdvice 适配为 MethodInterceptor
     ├── AfterAdvice	标记接口，表示在目标方法执行后执行的通知
     │   ├── AspectJAfterAdvice
     │   ├── AspectJAfterThrowingAdvice
     │   ├── AfterReturningAdviceInterceptor	（拦截器适配器）将 AfterReturningAdvice 适配为 MethodInterceptor
     │   ├── ThrowsAdviceInterceptor	（拦截器适配器）将 ThrowsAdvice 适配为 MethodInterceptor
     │   ├── AfterReturningAdvice (接口)		后置返回通知接口，在目标方法成功执行并返回结果后执行
     │   │   └── AspectJAfterReturningAdvice
     │   └── ThrowsAdvice (接口)	标记接口，异常通知接口，在目标方法抛出异常时执行
     ├── Interceptor	标记接口，用于拦截方法调用
     │   ├── ConstructorInterceptor  构造器拦截器，用于拦截构造器调用
     │   └── MethodInterceptor	方法拦截器，可以在方法调用前后执行自定义逻辑
     │      ├── TransactionInterceptor	事务拦截器，用于处理声明式事务
     │      ├── CacheInterceptor	缓存拦截器，用于处理缓存逻辑
     │      ├── MethodValidationInterceptor	方法验证拦截器，用于参数验证
     │      ├── ExposeInvocationInterceptor	暴露当前 MethodInvocation 到 ThreadLocal 的拦截器
     │      ├── JCacheInterceptor 用于处理 JCache (JSR-107) 注解驱动的缓存操作，拦截带有 @CacheResult、@CachePut 等注解的方法
     │      ├── OpenSessionInterceptor	主要用于 Hibernate 场景，在方法执行前打开 Hibernate Session，确保在整个方法执行过程中 Session 保持开启状态
     │      ├── EventPublicationInterceptor	用于事件发布的拦截器
     │      ├── RemoteInvocationTraceInterceptor	用于跟踪远程方法调用，记录远程调用的详细信息
     │      ├── PersistenceExceptionTranslationInterceptor  用于将底层持久化框架的异常转换为 Spring 统一数据访问异常体系
     │      ├── ConcurrencyThrottleInterceptor	用于限制并发访问，控制同时执行的目标方法数量，防止系统过载
     │      ├── MBeanClientInterceptor	用于与 JMX MBean 进行交互，可以调用 MBean 上的操作或获取属性值
     │	 	│     └──  MBeanProxyFactoryBean	用于创建 MBean 的代理工厂 bean，简化 MBean 客户端的使用
     │      ├── JaxWsPortClientInterceptor	用于处理 JAX-WS Web Service 客户端调用
     │	 	│     └──  JaxWsPortProxyFactoryBean	用于创建 JAX-WS Port 的代理工厂 bean，简化 Web Service 客户端的配置和使用
     │      ├── AsyncExecutionInterceptor	异步执行拦截器，用于异步方法调用
     │	 	│     └──  AnnotationAsyncExecutionInterceptor	处理 @Async 注解的拦截器
     │      ├── AspectJAfterThrowingAdvice
     │      ├── AspectJAfterReturningAdvice
     │      ├── AspectJAfterAdvice
     │      ├── AspectJMethodBeforeAdvice
     │      ├── AspectJAroundAdvice
     │      ├── AfterReturningAdviceInterceptor	（拦截器适配器）将 AfterReturningAdvice 适配为 MethodInterceptor
     │      ├── ThrowsAdviceInterceptor	（拦截器适配器）将 AfterReturningAdvice 适配为 MethodInterceptor
     │      ├── MethodBeforeAdviceInterceptor	（拦截器适配器）将 MethodBeforeAdvice 适配为 MethodInterceptor
     │      ├── IntroductionInterceptor
     │      │     ├── DelegatePerTargetObjectIntroductionInterceptor
     │  	│     └──  DelegatingIntroductionInterceptor
     │      └── ...
     ├── DynamicIntroductionAdvice	动态引入接口，用于向目标对象动态添加新的接口和实现
     │   └── IntroductionInterceptor 标记接口，用于动态引入新的接口和实现到目标对象
     │       ├── DelegatePerTargetObjectIntroductionInterceptor	委托引入拦截器，通过委托给特定对象实现引入的接口
     │   	 └──  DelegatingIntroductionInterceptor
     └── AbstractAspectJAdvice	AspectJ 风格通知的抽象基类
         ├── AspectJAfterThrowingAdvice	AspectJ 风格的异常通知
         ├── AspectJAfterReturningAdvice	AspectJ 风格的后置返回通知
         ├── AspectJAfterAdvice		AspectJ 风格的后置通知
         ├── AspectJMethodBeforeAdvice	AspectJ 风格的前置通知
         └── AspectJAroundAdvice	AspectJ 风格的环绕通知

相关类和接口区别说明
	BeforeAdvice: 标记接口，表示前置通知，在目标方法执行前执行
	AfterAdvice: 标记接口，表示后置通知，在目标方法执行后执行
	Interceptor: 拦截器接口，继承自 Advice，用于拦截方法调用
	MethodInterceptor: 方法拦截器，可以在方法调用前后执行自定义逻辑
	MethodBeforeAdvice: 具体的前置通知接口，可以在目标方法执行前执行特定逻辑
	AfterReturningAdvice: 后置返回通知接口，在目标方法成功执行后执行
	ThrowsAdvice: 异常通知接口，在目标方法抛出异常时执行
4. 使用场景
	在面向切面编程（AOP）中作为所有通知类型的根接口
	用于定义横切关注点（如日志、事务、安全等）的逻辑
	作为 Spring AOP 框架中构建代理对象和拦截器链的基础类型
	在 AspectJ 风格的切面编程中作为基础接口使用
5. 实际代码应用示例





 */
public interface Advice {

}
